#pragma once

#include <iostream>
#include <queue>
#include <pthread.h>
template <class T>
class BlockQueue
{
public:
    BlockQueue()
    {
    }
    void push(const T &in)
    {
    }
    void pop(T *out)
    {
    }
    ~BlockQueue()
    {
    }

private:
    std::queue<T> _q; // 阻塞队列
    int _cap;
    // 这个队列是一个临界资源，被同时多个线程访问，要保证他们安全
    pthread_mutex_t _mutex;
    // 如果造成饥问题，频繁检测，生产刚生产知道有数据，消费刚消费知道有数据，生产和消费可以现场互相通知，来保证他们的同步
    pthread_cond_t _cond;
};